#!/bin/bash

switch_type=`sonic-cfggen -d -v "DEVICE_METADATA['localhost']['switch_type']"`
# Check whether the routemap is for internal BGP sessions.
function is_internal_route_map()
{
    if [[ "$1" =~ .*"_INTERNAL_".* || "$1" =~ .*"VOQ_".* ]]
    then
         return 1
    else
         return 0
    fi
}

function check_not_installed()
{
  c=0
  config=$(vtysh -c "show run")
  for route_map_name in $(echo "$config" | sed -ne 's/  neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6' | uniq);
  do
    is_internal_route_map $route_map_name
    if [[ $? -eq 1 ]]; then
        continue
    fi
    echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
    c=$((c+$?))
    echo "$config" | egrep -q "^route-map $route_map_name permit 30$"
    c=$((c+$?))
    echo "$config" | egrep -q "^route-map $route_map_name deny 40$"
    c=$((c+$?))
  done
  return $c
}

function check_installed()
{
  c=0
  e=0
  config=$(vtysh -c "show run")
  for route_map_name in $(echo "$config" | sed -ne 's/  neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6' | uniq);
  do
    is_internal_route_map $route_map_name
    if [[ $? -eq 1 ]]; then
        continue
    fi
    echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
    c=$((c+$?))
    e=$((e+1))
    echo "$config" | egrep -q "^route-map $route_map_name permit 30$"
    c=$((c+$?))
    e=$((e+1))
    echo "$config" | egrep -q "^route-map $route_map_name deny 40$"
    c=$((c+$?))
    e=$((e+1))
  done
  return $((e-c))
}

function find_num_routemap()
{
  c=0
  config=$(vtysh -c "show run")
  for route_map_name in $(echo "$config" | sed -ne 's/  neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6' | uniq);
  do
    is_internal_route_map $route_map_name
    if [[ $? -eq 1 ]]; then
        continue
    fi
    c=$((c+1))
  done
  return $c
}
